基于SNOMAP算法的积雪面积信息提取及其在ENVI/IDL中的实现

您所在的位置:网站首页 决策树 envi 基于SNOMAP算法的积雪面积信息提取及其在ENVI/IDL中的实现

基于SNOMAP算法的积雪面积信息提取及其在ENVI/IDL中的实现

2024-07-16 03:04| 来源: 网络整理| 查看: 265

1.       SNOMAP算法简介

SNOMAP算法是Hall等提出的基于Landsat 5 TM数据的积雪识别算法。其物理基础体现在:① 积雪在可见光波段有较高的反射率,在短波红外波段有较强的吸收特征;② 大部分云在可见光波段有较高的反射率,在短波红外波段反射率依然很高。利用该特点,采用NDSI阈值提取方法可以很好的识别积雪。基于Landsat 5 TM数据的NDSI(Normalized Difference Snow Index)计算方法为:

其中, 为积雪在可见光波段的反射率, 为积雪在短波红外波段的反射率。针对Landsat 5 TM数据,对积雪和云反应敏感的第2波段(b2,绿波段,0.52~0.60 μm)和第5波段(b5,短波红外波段,1.55~1.75 μm)被用来计算归一化雪指数NDSI。通过在北美的验证,SNOMAP算法设定NDSI阈值为0.4,当像元NDSI值 ≥ 0.4时,该像元被定义为积雪。但积雪和水体在可见光和短波红外波段的反射特征相似,该阈值识别出的积雪中有水体存在。为了进一步识别积雪,利用近红外波段水体强吸收而积雪吸收弱于水体的特点,SNOMAP加入积雪识别的另外一个判别因子,b4 ≥ 0.11,其中b4为Landsat 5 TM数据的第4波段(近红外波段,0.76~0.90 μm)的反射率。这样,当满足NDSI ≥ 0.4且b4 ≥ 0.11时,该像元被识别为积雪。

但考虑到植被覆盖度对积雪识别的影响,SNOAMAP算法中还充分考虑了植被的影响。当0.1≤NDSI≤0.4,但NDVI≥0.38,同时b4 ≥ 0.11时,该像元同时被识别为积雪。其中基于基于Landsat 5 TM数据的NDVI(Normalized Difference Vegetation Index)计算方法为:

其中, 为积雪在近红外波段的反射率, 为积雪在红光波段的反射率。针对Landsat 5 TM数据,第4波段(b4,近红外波段,0.76~0.90 μm)和第3波段(b3,红波段,0.63~0.69μm)被用来计算归一化植被指数NDVI。

2.       SNOMAP算法在ENVI中的实现

SNOMAP算法在ENVI中利用决策树实现,决策树是基于遥感图像数据及其他空间数据,通过专家经验总结、简单的数学统计和归纳的方法,获得分类规则并进行遥感分类。分类的规则易于理解,分类过程也符合人的认知过程,最大的特点是利用多源数据。SNOMAP算法在ENVI中的实现步骤如下:

(1)      准备数据

Landsat 5 TM原始数据是没有经过定标的DN值,而SNOMAP算法需要Landsat 5 TM数据各个波段的反射率,因此运算前需要对原始Landsat 5 TM数据进行几何纠正、大气纠正和传感器定标。

(2)      NDSI、NDVI计算

利用ENVI主菜单﹣> Basic Tools﹣>Band Math,在公式输入栏中输入:

FLOAT (B2-B5)/( B2-B5)以及FLOAT (B2-B5)/( B2-B5)。NDSI和NDVI都是介于0-1之间的数据,需要在计算公示前加FLOAT,以生成浮点型的数据

(3)      决策树建立

利用ENVI主菜单﹣> Classification﹣>Decision Tree﹣> Build New Decision Tree,打开ENVI Decision Tree面板,进行规则定义与决策树的建立。

(4)      决策树执行

在ENVI Decision Tree面板中,选择Options﹣>Execute,执行定义好的决策树。

3.       SNOMAP算法在IDL中的实现

除了ENVI中已经做好的工具菜单,用户在实际的应用系统中也可以利用IDL语言以及ENVI的小部件函数,很方便的实现SNOMAP算法。原始Landsat 5 TM数据进行几何纠正、大气纠正和传感器定标后,SNOMAP算法实现步骤如下:

; 波段读取

Band2  = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[1])

Band3  = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[2])

Band4  = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[3])

Band5  = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[4])

; NDSI计算

NDSI_Add = Band2+Band5

        NDVI   = Band2-Band5

        index  = WHERE(NDSI_Add GT 0,nCount)

        IF(nCount EQ 0) THEN BEGIN

          STR_ERROR = 'Landsat NDSI failed!'

           RETURN

       ENDIF

NDSI[index] = NDSI[index]/NDSI_Add[index]

; NDVI计算

   NDVI_Add = Band4+Band3

       NDVI   = Band4-Band3

      index  = WHERE(NDVI_Add GT 0,nCount)

      IF(nCount EQ 0) THEN BEGIN

         STR_ERROR = 'Landsat NDVI failed!'

         RETURN

      ENDIF

    NDVI[index] = NDVI[index]/NDVI_Add[index]

   ; SNOMAP算法

   SnowMask = BYTARR(NS,NL)

   idx = WHERE(NDSI GT 0.4 and Band4 GT 0.11, nCount

   IF(nCount GT 0) THEN SnowMask[idx] = 1

   idx = WHERE(NDSI LE 0.4 and NDSI GT 0.1 and NDVI GT 0.38 AND Band4 GT 0.11, nCount)

   IF(nCount GT 0) THEN SnowMask[idx] = 1

4.       结果浏览

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3